The present invention relates to computer networks in general, and more particularly to methods and apparatus for downloading a file from a server.
Transfer protocols for downloading files from serving computers (servers) to client computers (clients) via computer networks such as the Internet are well known in the art. Two commonly used transfer protocols include the File Transfer Protocol (FTP) and the Hypertext Transfer Protocol (HTTP). Generally speaking, in order to download a file a client establishes a single data transfer link with a server during a file transfer session through which the contents of the file is transmitted from the server to the client.
Recent developments in file transfer software which implement the various transfer protocols include the ability to begin downloading a file from a point other than the start of the file simply by instructing the server to begin transmitting the file from a specified byte offset. This has led to the development of file transfer software that is able to resume a download where the data transfer link has been broken in the middle of a download. The download is simply continued from the point at which the download stopped in another file transfer session via another data transfer link with the server.
This ability to download a file in sections has more recently led to the development of file transfer software which establishes multiple data transfer links with a server where different portions of a single file are downloaded via different data transfer links and reassembled at the client. This generally results in a file being downloaded to a client faster due to the greater cumulative throughput of multiple data transfer links with a single server as compared with that of a single data transfer link with the server.
The present invention seeks to provide improved methods and apparatus for downloading a file from a server.
There is thus provided in accordance with a preferred embodiment of the present invention a method for downloading a file to a client, the method including the steps of a) determining the presence of the file on each of a plurality of secondary servers, b) retrieving a plurality of portions of the file from any of the servers, where at least a first of the portions is retrieved from a first of any of the servers and at least a second of the portions is retrieved from a second of any of the servers, and c) assembling the file at the client from the plurality of portions.
Further in accordance with a preferred embodiment of the present invention the method further includes the step of d) determining the presence of the file on a primary server and thereafter performing the determining step a), and where the determining step a) includes determining whether the file on each of the plurality of secondary servers is a duplicate of the file on the primary server.
Still further in accordance with a preferred embodiment of the present invention the method further includes the steps of e) determining the performance of a plurality of the servers, f) ranking the plurality of servers from best performing to worst performing, and where the retrieving step b) includes retrieving from a selected plurality of the plurality of servers selected in order of their ranking from best performing to worst performing.
Additionally in accordance with a preferred embodiment of the present invention the determining the performance step includes determining the response time of the server.
Moreover in accordance with a preferred embodiment of the present invention the determining the performance step includes determining the throughput of the server.
Further in accordance with a preferred embodiment of the present invention the retrieving step b) includes discontinuing retrieving any of the portions from any of the servers that provides its portion at a performance level that falls below a predefined performance level, and continuing retrieval of the retrieval-discontinued portion from any other of the servers.
Still further in accordance with a preferred embodiment of the present invention the retrieving step b) includes retrieving using Files Transfer Protocol (FTP).
Additionally in accordance with a preferred embodiment of the present invention the retrieving step b) includes retrieving using Hypertext Transfer Protocol (HTTP).